﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TimelineService.Inis {
    public sealed class A3gIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "3g";
    }

    public sealed class AbyssIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "abyss";
    }

    public sealed class AdwestIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "adwest";
    }

    public sealed class BackieeIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "backiee";
    }

    public sealed class BingIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "bing";
    }

    public sealed class ColorhubIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "colorhub";
    }

    public sealed class EsoIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "eso";
    }

    public sealed class FavoriteIni {
        public string Order { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}";

        public static string GetId() => "favorite";
    }

    public sealed class GluttonIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "glutton";
    }

    public sealed class Himawari8Ini {
        private float offset = 0.5f;
        public float Offset {
            set => offset = value < 0.01f ? 0.01f : (value > 1 ? 1 : value);
            get => offset;
        }

        private float ratio = 0.5f;
        public float Ratio {
            set => ratio = value < 0.1f ? 0.1f : (value > 1 ? 1 : value);
            get => ratio;
        }

        private float desktopPeriod = 1;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 2;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&offset={Offset}&ratio={Ratio}";

        public static string GetId() => "himawari8";
    }

    public sealed class HuamaoIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "huamao";
    }

    public sealed class IuiIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "iui";
    }

    public sealed class LocalIni {
        public string Order { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}";

        public static string GetId() => "local";
    }

    public sealed class LspIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "lsp";
    }

    public sealed class NasaIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "nasa";
    }

    public sealed class NetbianIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "netbian";
    }

    public sealed class ObzhiIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "obzhi";
    }

    public sealed class OneIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "one";
    }

    public sealed class PexelsIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "pexels";
    }

    public sealed class QingbzIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "qingbz";
    }

    public sealed class SimpleIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "simple";
    }

    public sealed class SkitterIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "skitter";
    }

    public sealed class SnakeIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "snake";
    }

    public sealed class TimelineIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "timeline";
    }

    public sealed class ToopicIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "toopic";
    }

    public sealed class VenusIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "venus";
    }

    public sealed class WallhavenIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "wallhaven";
    }

    public sealed class WallhereIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "wallhere";
    }

    public sealed class WallpaperupIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "wallpaperup";
    }

    public sealed class YmyouliIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "ymyouli";
    }

    public sealed class ZzzmhIni {
        public string Order { set; get; }

        public string CateHow { set; get; }

        public string CateWhat { set; get; }

        private float desktopPeriod = 24;
        public float DesktopPeriod {
            set => desktopPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => desktopPeriod;
        }

        private float lockPeriod = 24;
        public float LockPeriod {
            set => lockPeriod = Math.Max(Math.Min(value, 24), 0.25f);
            get => lockPeriod;
        }

        override public string ToString() => $"desktopperiod={DesktopPeriod}&lockperiod={LockPeriod}" +
            $"&order={Order}&catehow={CateHow}&catewhat={CateWhat}";

        public static string GetId() => "zzzmh";
    }
}
